using System;

namespace CalculadoraRemota
{
	public class Calculadora : System.MarshalByRefObject, ICalculadora
	{
		private static int contador = 0;
		public Calculadora(){
			contador++;
			Console.WriteLine("Construimos la calculadora " + contador);
		}

		private double bas= 10.0;
		public double Base {
			get { return bas;}
			set { bas = value;}
		}

		public double sumarFraccion (Fraccion f1, Fraccion f2)
		{
			Console.WriteLine("Vamos a sumar dos fracciones");
			return f1.Valor() + f2.Valor();
		}

		public double Potencia (double valor)
		{
			return Math.Pow(bas, valor);
		}

		public double Suma(double izq, double der)
		{
			Console.WriteLine("Vamos a sumar " + izq + "+" + der);
			return izq + der;
		}

		public double Resta(double izq, double der)
		{
			Console.WriteLine("Vamos a restar " + izq + "-" + der);
			return izq - der;
		}

		public double Producto(double izq, double der)
		{
			Console.WriteLine("Vamos a multiplicar " + izq + "*" + der);
			return izq * der;
		}

		public double Cociente (double dividendo, double divisor)
		{
			Console.WriteLine("Vamos a dividir " + dividendo + "/" + divisor);
			if (divisor == 0)
				throw new Exception("Division by zero");
			return dividendo / divisor;
		}

		public string Comparar(string s1, string s2){
			int n = String.Compare(s1, s2, false);
			if (n < 0)
				return "menor";
			if (n == 0)
				return "igual";
			if (n > 0)
				return "mayor";
			else throw new Exception("Error en las cadenas");
		}

	}
}

